home *** CD-ROM | disk | FTP | other *** search
/ internet.au CDrom 38 / netcd38.iso / FREEPROG / MAC / audio / macamp.hqx / MacAmp 1.0b6 ƒ / Plugin Programming / visual.h
Encoding:
C/C++ Source or Header  |  1998-09-05  |  3.0 KB  |  81 lines

  1. #pragma once
  2.  
  3. /*
  4.     Visual Plug-in API
  5.     ⌐1998, @soft
  6.     
  7.     Description:    The plugin API for MacAmp visual plugins.
  8.     Version:        1.0
  9.     Released:        9/1/98
  10.     Compatibility:    MacAmp 1.0b6+
  11.     Version history:
  12.     
  13.      Date    Who        Changes
  14.     ------+------+------------------------------------------------------
  15.     090598    SK        Commented the file, cleaned the unnesessary stuff.
  16.     090198  SK        Initial release
  17. */
  18.  
  19. #define VP_API_VERSION        0x01
  20.  
  21. // Plugin types
  22. enum {
  23.     plugVisual        = 'vis!'    // Visual plugin
  24. };
  25.  
  26. // Plugin return values
  27. enum {
  28.     visNoErr        = noErr,
  29.     visTerminate    = 1,        // terminate the plugin
  30.     visNoMemory        = 2            // terminate the plugin and display no memory alert
  31.         // all other returns will cause plugin termination and "unknown plugin error" alert.
  32. };
  33.  
  34. // plugin flags
  35. enum {
  36.     flagHasSettings        = 0x01,        // Plugin can display and handle settings dialog
  37.     flagGetKeyDown        = 0x02,        // Plugin wants to get keydown events
  38.     flagGetIdle            = 0x04        // Plugin wants to get idle events
  39. };
  40.  
  41. // Function prototypes (see dummy plug for the explanations)
  42. extern OSErr    PlugInitialize(WindowPtr* window, FSSpecPtr plug, UInt32* refcon);
  43. extern OSErr    PlugTerminate(WindowPtr window, UInt32* refcon);
  44. extern OSErr    PlugProcess(WindowPtr window, short chan, const double* stream, short dataSize, UInt32* refcon);
  45. extern OSErr    PlugMacEvent(WindowPtr window, EventRecord* event, UInt32* refcon);
  46. extern OSErr    PlugKeyDown(WindowPtr window, char key, short modifiers, UInt32* refcon);
  47. extern OSErr    PlugIdle(WindowPtr window, UInt32* refcon);
  48. extern OSErr    PlugSettings(WindowPtr window, UInt32* refcon);
  49. extern OSErr    PlugAbout(WindowPtr window, UInt32* refcon);
  50.  
  51. // Type defeinitions for plugin callbacks.
  52. typedef OSErr    (*vpPlugInitializeProcPtr)(WindowPtr* window, FSSpecPtr plug, UInt32* refcon);
  53. typedef OSErr    (*vpPlugTerminateProcPtr)(WindowPtr window, UInt32* refcon);
  54. typedef OSErr    (*vpPlugProcessProcPtr)(WindowPtr window, short chan, const double* stream, short dataSize, UInt32* refcon);
  55. typedef OSErr    (*vpPlugMacEventProcPtr)(WindowPtr window, EventRecord* event, UInt32* refcon);
  56. typedef OSErr    (*vpPlugKeyDownProcPtr)(WindowPtr window, char key, short modifiers, UInt32* refcon);
  57. typedef OSErr    (*vpPlugIdleProcPtr)(WindowPtr window, UInt32* refcon);
  58. typedef OSErr    (*vpPlugSettingsProcPtr)(WindowPtr window, UInt32* refcon);
  59. typedef OSErr    (*vpPlugAboutProcPtr)(WindowPtr window, UInt32* refcon);
  60.  
  61. typedef struct {
  62.     UInt16    api;                                // API used. Should always contain VP_API_VERSION
  63.     OSType    type;                                // Plugin type. Should always be plugVisual.
  64.     
  65.     UInt32    flags;                                // Plugin flags (flagXXX constants)
  66.     UInt32    globRefcon;                            // Any global refcon you wish to use.
  67.     
  68.     Str63    name;                                // Plugin name (displayed in Plugin menu)
  69.     
  70.         // Pointers to plugin functions, or nil if they are not implemented.
  71.     vpPlugInitializeProcPtr        initProc;
  72.     vpPlugTerminateProcPtr        terminateProc;
  73.     vpPlugProcessProcPtr        processProc;
  74.     vpPlugMacEventProcPtr        macEventProc;
  75.     vpPlugKeyDownProcPtr        keyDownProc;
  76.     vpPlugIdleProcPtr            idleProc;
  77.     vpPlugSettingsProcPtr        settingsProc;
  78.     vpPlugAboutProcPtr            aboutProc;
  79. } VPInfoBlock, *VPInfoPtr;
  80.  
  81.